package com.gcb.jvm.bytecodetest;


/**
 * 现代jvm在执行java代码时，通常都会解释执行和编译执行结合起来
 * 这里的解释和编译不是编译型语言和解释型语言
 * 这里的解释执行，是通过解释器来读取字节码，遇到相应的指令就去执行该指令
 * 所谓的编译执行，就是通过即时编译器（just in time ，jit）将字节转换为本地机器码来执行，现代jvm
 * 都会根据代码热点来生成相应的本地机器码
 *
 *
 * JVM执行指令时所采取的方式是基于栈的指令集。
 * 基于栈的指令集主要有入栈和出栈两种；
 * 基于栈的指令集的缺点在主完成相同的操作,指令集通常要比基于寄存器的指令集要多，
 * 指令集是在内存中完成操作的，而基于寄存器的指令集是直接由CPU来执行的,是在高速缓冲区中进行的,
 * 速度要快很多.虽然虚拟机可以采用一些优化手段,但总体来说,基于栈的指令集的执行速度要慢一些；
 * 基手栈的指令集的优势在于它可以在不同平台之间移植,而基于寄存器的指令集是与硬件架构累密关联的,无法做到可移植。
 *
 *
 * 通过下列的程序的指令码，可以看到对数的操作都是在操作数栈中进行的
 */
public class MyTest8 {
    public  int myCalculate() {
        int a = 1;
        int b = 2;
        int c = 3;
        int d = 4;

        int result =( a + b -c ) +d;

        return result;
    }
}
